package Dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import beans.Emprestimo;

import Uteis.FabricaDeConexoes;

public class EmprestimoDao {
	
	private Connection conecta;
	
	public EmprestimoDao() throws SQLException{
		this.conecta=FabricaDeConexoes.getConnection();
	}
	
	public void addEmprestimo(Emprestimo empresta)throws SQLException{
		
		PreparedStatement emprestando=this.conecta.prepareStatement("insert into emprestimo(id_emprestimo,id_aluno,id_livro,data_inicial,data_devolucao_prevista,data_devolucao_real,id_responsavel)values(?,?,?,?,?,?,?)");
		
		emprestando.setInt (1, empresta.getId_emprestimo());
		emprestando.setInt (2, empresta.getId_aluno());
		emprestando.setInt (3, empresta.getId_livro());
		emprestando.setDate(4, empresta.getDate_inicial());
		emprestando.setDate(5, empresta.getData_devolucao_prevista());
		emprestando.setDate(6, empresta.getData_devolucao_real());
		emprestando.setInt (7, empresta.getId_responsavel());
		
		emprestando.execute();
		emprestando.close();
	}
	
	public void delEmprestimo(Emprestimo emprestimoDevolve) throws SQLException{
		PreparedStatement devolvendo=this.conecta.prepareStatement("delete from emprestimo where id_emprestimo=?");
		
		devolvendo.setInt(1, emprestimoDevolve.getId_emprestimo());
		devolvendo.execute();
		devolvendo.close();
	}
	
	public ArrayList<Emprestimo> listaEmprestimos() throws SQLException{
		
		PreparedStatement buscaEmprestimo=this.conecta.prepareStatement("select* from emprestimo");
		
		ResultSet rs=buscaEmprestimo.executeQuery();
		ArrayList<Emprestimo> emprestados=new ArrayList<Emprestimo>();
		
		while(rs.next()){
			
			Emprestimo emprestimo=new Emprestimo();
			
			emprestimo.setId_emprestimo          (rs.getInt ("id_emprestimo"));
			emprestimo.setId_aluno               (rs.getInt ("id_aluno"));
			emprestimo.setId_livro               (rs.getInt ("id_livro"));
			emprestimo.setDate_inicial           (rs.getDate("data_inicial"));
			emprestimo.setData_devolucao_prevista(rs.getDate("data_devolucao_prevista"));
			emprestimo.setData_devolucao_real    (rs.getDate("data_devolucao_real"));
			emprestimo.setId_responsavel         (rs.getInt ("id_responsavel"));
			
			emprestados.add(emprestimo);
		}
		rs.close();
		buscaEmprestimo.close();
		conecta.close();
		
		return emprestados;
	}
	
	public void renovarEmprestimo(Emprestimo emprestimoRenova) throws SQLException{
		
		PreparedStatement renovaEmprestimo=this.conecta.prepareStatement("update emprestimo set id_aluno=?,id_livro=?,data_inicial=?,data_devolucao_prevista=?,data_devolucao_real=?,id_responsavel=? where id_emprestimo=?");
		
		renovaEmprestimo.setInt (1, emprestimoRenova.getId_aluno());
		renovaEmprestimo.setInt (2, emprestimoRenova.getId_livro());
		renovaEmprestimo.setDate(3, emprestimoRenova.getDate_inicial());
		renovaEmprestimo.setDate(4, emprestimoRenova.getData_devolucao_prevista());
		renovaEmprestimo.setDate(5, emprestimoRenova.getData_devolucao_real());
		renovaEmprestimo.setInt (6, emprestimoRenova.getId_responsavel());
		
		renovaEmprestimo.execute();
		renovaEmprestimo.close();
	}

}
